from rest_framework import status

from weiwenhai_Oj.exceptions.base_exception import ServiceException


class OperationException(ServiceException):
    """
    操作异常基类，用于处理各种操作相关的异常情况。

    Attributes:
        message (str): 异常消息。
        code (int): HTTP状态码，默认为HTTP_400_BAD_REQUEST。

    Usage:
        raise OperationException("操作失败")

    """
    def __init__(self, message, code=status.HTTP_400_BAD_REQUEST):
        super().__init__(message, code)


class OperationFailedException(OperationException):
    """
    操作失败异常，当特定操作无法成功完成时抛出。

    Usage:
        raise OperationFailedException("支付操作失败")

    """
    pass


class ConcurrencyException(OperationException):
    """
    并发操作异常，当多个操作同时对同一资源进行修改时抛出。

    Usage:
        raise ConcurrencyException("并发更新冲突")

    """
    pass


class IllegalStateException(OperationException):
    """
    状态异常，当操作试图在不允许的状态下执行时抛出。

    Usage:
        raise IllegalStateException("非法的订单状态")

    """
    pass
